Scalable storage systems with directly attached disks require redundancy mechanisms for data protection. Within a single node, such as a single server, various techniques are used for protection of directly-attached storage (DAS), such as RAID-5, RAID-6, other RAID levels, or variations thereof. In distributed systems or in large-scale storage systems, such as large JBOD complexes, erasure-coding techniques are used to provide protection by distributing error-correction coding over a larger number of disks. Erasure-coding, however, requires shipping (i.e. sending and receiving) large amounts of data. In some embodiments, data must be updated at r separate disks to handle r out of n drive failures. When combined with resiliency against node failures, the foregoing systems tend to become very expensive in an amount of redundancy and/or in an amount of data that must be shipped between nodes for updating or for recovery.